////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: ParameterParser V1.1.4
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  tdl_1_0_0.h
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef TDL_1_0_0_H
#define TDL_1_0_0_H

#include "parametermodule.h"
#include "parameterfilesymboltable.h"
#include "parametertypes.h"
#include "ispglobalelements.h"

#define TDL_1_0_0_NAMESPACE_BEGIN namespace tdl_1_0_0 {
#define TDL_1_0_0_NAMESPACE_END }

TDL_1_0_0_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// tdl10_rgn_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct tdl10_rgn_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// lut_2d_h_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   delta 2D LUT for hue.
    /// Default Value: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    /// Range:         [-360, 360]
    /// Bit Depth:      10s
    /// Length:        24x16
    /// Conversion:    No Conversion needed
    /// Notes:         row 24 should be the same as row 0 data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct lut_2d_h_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// lut_2d_h - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
        /// Length:        384
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT lut_2d_h[384];
    } lut_2d_h_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// lut_2d_s_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   delta 2D LUT for saturation.
    /// Default Value: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    /// Range:         [-1.0, 1.0]
    /// Bit Depth:      10s
    /// Length:        24x16
    /// Conversion:    No Conversion needed
    /// Notes:         row 24 should be the same as row 0 data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct lut_2d_s_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// lut_2d_s - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
        /// Length:        384
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT lut_2d_s[384];
    } lut_2d_s_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// l_boundary_start_a
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   to eliminate hue and saturation change on low Luminance, set Luminance start boundary which only will not
    ///                change hue and saturation by 2D LUT. Lower value make more hue and saturation change.
    /// Default Value: 0.0
    /// Range:         [0.0f, 1.0f]
    /// Bit Depth:      11u
    /// Conversion:    No Conversion needed
    /// Notes:         Setting this value to 1.0f means no hue and saturation change at all.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT        l_boundary_start_a;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// l_boundary_start_b
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   to eliminate hue and saturation change on low Luminance, set Luminance start boundary which only will not
    ///                change hue and saturation by 2D LUT. Lower value make more hue and saturation change.
    /// Default Value: 0.0
    /// Range:         [0.0f, 1.0f]
    /// Bit Depth:      11u
    /// Conversion:    No Conversion needed
    /// Notes:         Setting this value to 1.0f means no hue and saturation change at all.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT        l_boundary_start_b;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// l_boundary_end_a
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   to eliminate hue and saturation change on high Luminance, set Luminance end boundary which only will not
    ///                change hue and saturation by 2D LUT. Higher value make more hue and saturation change.
    /// Default Value: 1.0f
    /// Range:         [0.0f, 1.0f]
    /// Bit Depth:      11u
    /// Conversion:    No Conversion needed
    /// Notes:         Setting this value to 0.0f means no hue and saturation change at all.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT        l_boundary_end_a;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// l_boundary_end_b
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   to eliminate hue and saturation change on high Luminance, set Luminance end boundary which only will not
    ///                change hue and saturation by 2D LUT. Higher value make more hue and saturation change.
    /// Default Value: 1.0f
    /// Range:         [0.0f, 1.0f]
    /// Bit Depth:      11u
    /// Conversion:    No Conversion needed
    /// Notes:         Setting this value to 0.0f means no hue and saturation change at all.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT        l_boundary_end_b;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// y_blend_factor_integer
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   hue and saturation change can cause Y value change. To prevent Y value change, calculate Y offset between
    ///                input Y and output Y and recover output Y value as same as input Y according to this factor. Lower value
    ///                means less Y recovery and higher value means more Y recovery.
    /// Default Value: 0.0f
    /// Range:         [0.0f, 1.0f]
    /// Bit Depth:      5uQ4
    /// Conversion:    No Conversion needed
    /// Notes:         Setting this value to 0.0f means hue and saturation will be changed as intended even though Y value
    ///                changes. On the other hands, setting this value to 1.0f means hue and saturation will not be changed as
    ///                intended because of Y recovery.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT        y_blend_factor_integer;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_tdl10_cct_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_tdl10_cct_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// cct_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ispglobalelements::trigger_pt_type    cct_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// tdl10_rgn_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    tdl10_rgn_dataType tdl10_rgn_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_tdl10_aec_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_tdl10_aec_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// aec_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::trigger_pt_type_aec aec_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// aec_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct aec_dataStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// mod_tdl10_cct_data - Array
        /// Min Length:    1
        /// Max Length:    Unbounded
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32                  mod_tdl10_cct_dataCount;
        UINT32                  mod_tdl10_cct_dataID;
        mod_tdl10_cct_dataType* mod_tdl10_cct_data;
    } aec_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_tdl10_led_idx_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_tdl10_led_idx_dataType
{
    ispglobalelements::trigger_pt_type_led_idx led_idx_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// led_idx_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct led_idx_dataStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// mod_tdl10_aec_data - Array
        /// Min Length:    1
        /// Max Length:    Unbounded
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32                  mod_tdl10_aec_dataCount;
        UINT32                  mod_tdl10_aec_dataID;
        mod_tdl10_aec_dataType* mod_tdl10_aec_data;
    } led_idx_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_tdl10_hdr_aec_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_tdl10_hdr_aec_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_aec_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ispglobalelements::trigger_pt_type_aec_hdr hdr_aec_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_aec_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct hdr_aec_dataStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// mod_tdl10_led_idx_data - Array
        /// Min Length:    1
        /// Max Length:    Unbounded
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32                      mod_tdl10_led_idx_dataCount;
        UINT32                      mod_tdl10_led_idx_dataID;
        mod_tdl10_led_idx_dataType* mod_tdl10_led_idx_data;
    } hdr_aec_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_tdl10_drc_gain_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_tdl10_drc_gain_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// drc_gain_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ispglobalelements::trigger_pt_type drc_gain_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// drc_gain_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct drc_gain_dataStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// mod_tdl10_hdr_aec_data - Array
        /// Min Length:    1
        /// Max Length:    Unbounded
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32                      mod_tdl10_hdr_aec_dataCount;
        UINT32                      mod_tdl10_hdr_aec_dataID;
        mod_tdl10_hdr_aec_dataType* mod_tdl10_hdr_aec_data;
    } drc_gain_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_tdl10_coreType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_tdl10_coreType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mod_tdl10_drc_gain_data - Array
    /// Min Length:    1
    /// Max Length:    Unbounded
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32                       mod_tdl10_drc_gain_dataCount;
    UINT32                       mod_tdl10_drc_gain_dataID;
    mod_tdl10_drc_gain_dataType* mod_tdl10_drc_gain_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_tdl10_reserveType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_tdl10_reserveType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// lut_1d_h_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   knee point 1D LUT for hue which will define the original point you want to move
    /// Default Value: 0,15,30,45,60,75,90,105,120,135,150,165,180,195,210,225,240,255,270,285,300,315,330,345,360
    /// Range:         [0,360]
    /// Bit Depth:     14u
    /// Length:        25
    /// Conversion:    No Conversion needed
    /// Notes:         i. LUT are always programmed in ascending order. ii. No two entries for the LUT can be equal; iii. Hue's
    ///                first LUT is always 0; iv. Hue's last LUT(25 for h/w) is always 360.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct lut_1d_h_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// lut_1d_h - Array
        ///
        /// Tuning Level:  rarely_tune
        /// Default Value: 0,15,30,45,60,75,90,105,120,135,150,165,180,195,210,225,240,255,270,285,300,315,330,345,360
        /// Length:        25
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT lut_1d_h[25];
    } lut_1d_h_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// lut_1d_s_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   knee point 1D LUT for saturation which will define the original point you want to move
    /// Default Value: 0.0625,0.125,0.1875,0.25,0.3125,0.375,0.4375,0.5,0.5625,0.625,0.6875,0.75,0.8125,0.875,0.9375,1.0
    /// Range:         [0.0, 1.0]
    /// Bit Depth:      12u
    /// Length:        16
    /// Conversion:    No Conversion needed
    /// Notes:         i. LUT is always programmed in ascending order; ii. No two entries of LUT can be equal; iii. Saturation's
    ///                first entry will define gray area which will not change at all; iv. Saturation's last LUT is always Max
    ///                (2048).
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct lut_1d_s_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// lut_1d_s - Array
        ///
        /// Tuning Level:  rarely_tune
        /// Default Value: 0.0625,0.125,0.1875,0.25,0.3125,0.375,0.4375,0.5,0.5625,0.625,0.6875,0.75,0.8125,0.875,0.9375,1.0
        /// Length:        16
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT lut_1d_s[16];
    } lut_1d_s_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// k_b_integer
    ///
    /// Tuning Level:  never_tune
    /// Description:   to calculate Y offset to recover Y value, RGB to Y coefficient can be tuned.
    /// Default Value: 0.114f
    /// Range:         [0.0f, 0.5f]
    /// Bit Depth:     8uQ9
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT        k_b_integer;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// k_r_integer
    ///
    /// Tuning Level:  never_tune
    /// Description:   to calculate Y offset to recover Y value, RGB to Y coefficient can be tuned.
    /// Default Value: 0.299f
    /// Range:         [0.0f, 0.5f]
    /// Bit Depth:     8uQ9
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT        k_r_integer;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// h_shift
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   adjust 2d delta hue range. When h_shift=5, delta hue range is +-360 degree. When h_shift=1, delta hue
    ///                range is +-30 degree.
    /// Default Value: 1
    /// Range:         [0, 5]
    /// Bit Depth:     3u
    /// Conversion:    No Conversion needed
    /// Notes:         (deltaH SHIFT_LEFT h_shift) LEFT_ARROW 6*2^11=12288.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32       h_shift;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// s_shift
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   adjust 2d delta saturation range. When s_shift=2, delta saturation range is +-1.0. When s_shift=0, delta
    ///                saturation range is +-0.25.
    /// Default Value: 0
    /// Range:         [0, 3]
    /// Bit Depth:     2u
    /// Conversion:    No Conversion needed
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32       s_shift;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_tdl10Type
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_tdl10Type
{
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Binary file symbol table entry ID
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 SymbolTableID;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// enable_section
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct enable_sectionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        globalelements::enable_flag_type twodlut_enable;
    } enable_section;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// module_version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct module_versionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        INT32 major_revision;
        INT32 minor_revision;
        INT32 incr_revision;
    } module_version;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// control_variables
    ///
    /// Default Value: control_drc_gain, control_aec_exp_sensitivity_ratio, control_led_idx, control_lux_idx, control_cct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct control_variablesStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// control_var_type - Array
        /// Default Value: control_drc_gain, control_aec_exp_sensitivity_ratio, control_led_idx, control_lux_idx, control_cct
        /// Length:        5
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        enum class control_var_typeEnum
        {
            control_drc_gain                  = 0,
            control_exp_time_ratio            = 1,
            control_aec_exp_sensitivity_ratio = 2,
            control_led_idx                   = 3,
            control_lux_idx                   = 4,
            control_gain                      = 5,
            control_cct                       = 6
        } control_var_type[5];
    } control_variables;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// control_method
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct control_methodStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// aec_exp_control
        /// Default Value: control_lux_idx
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ispglobalelements::tuning_control_aec_type     aec_exp_control;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// aec_hdr_control
        /// Default Value: control_aec_exp_sensitivity_ratio
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ispglobalelements::tuning_control_aec_hdr_type aec_hdr_control;
    } control_method;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// private_information
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct private_informationStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// led_sensitivity_trigger
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ispglobalelements::trigger_pt_type led_sensitivity_trigger;
    } private_information;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_tdl10_reserve
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_tdl10_reserveType chromatix_tdl10_reserve;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_tdl10_core
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_tdl10_coreType    chromatix_tdl10_core;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_tdl10TypeClass
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class chromatix_tdl10TypeClass : public ParameterModule, public chromatix_tdl10Type
{
public:
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const UINT16 MAJOR = 1;
    static const UINT16 MINOR = 0;
    static const UINT32 PATCH = 0;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Default Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_tdl10TypeClass(
        const CHAR* name);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_tdl10TypeClass(
        const CHAR* name,
        UINT32 modeId,
        UINT16 mode,
        UINT16 subMode,
        UINT32 group);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Destructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ~chromatix_tdl10TypeClass();

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// GetName
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const CHAR* GetName(
        const CHAR* type);


    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load tdl10_rgn_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadtdl10_rgn_dataType(
        ParameterFileSymbolTableEntry* entry,
        tdl10_rgn_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load tdl10_rgn_dataType_lut_2d_h_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadtdl10_rgn_dataType_lut_2d_h_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        tdl10_rgn_dataType::lut_2d_h_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load tdl10_rgn_dataType_lut_2d_s_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadtdl10_rgn_dataType_lut_2d_s_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        tdl10_rgn_dataType::lut_2d_s_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_tdl10_cct_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_tdl10_cct_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_tdl10_cct_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_tdl10_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_tdl10_aec_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_tdl10_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_tdl10_aec_dataType_aec_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_tdl10_aec_dataType_aec_dataStruct(
        ParameterFileSymbolTableEntry* entry,
        mod_tdl10_aec_dataType::aec_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_tdl10_led_idx_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_tdl10_led_idx_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_tdl10_led_idx_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_tdl10_led_idx_dataType_led_idx_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_tdl10_led_idx_dataType_led_idx_dataStruct(
        ParameterFileSymbolTableEntry* entry,
        mod_tdl10_led_idx_dataType::led_idx_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_tdl10_hdr_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_tdl10_hdr_aec_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_tdl10_hdr_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_tdl10_hdr_aec_dataType_hdr_aec_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_tdl10_hdr_aec_dataType_hdr_aec_dataStruct(
        ParameterFileSymbolTableEntry* entry,
        mod_tdl10_hdr_aec_dataType::hdr_aec_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_tdl10_drc_gain_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_tdl10_drc_gain_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_tdl10_drc_gain_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_tdl10_drc_gain_dataType_drc_gain_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_tdl10_drc_gain_dataType_drc_gain_dataStruct(
        ParameterFileSymbolTableEntry* entry,
        mod_tdl10_drc_gain_dataType::drc_gain_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_tdl10_coreType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_tdl10_coreType(
        ParameterFileSymbolTableEntry* entry,
        chromatix_tdl10_coreType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_tdl10_reserveType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_tdl10_reserveType(
        ParameterFileSymbolTableEntry* entry,
        chromatix_tdl10_reserveType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_tdl10_reserveType_lut_1d_h_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_tdl10_reserveType_lut_1d_h_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_tdl10_reserveType::lut_1d_h_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_tdl10_reserveType_lut_1d_s_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_tdl10_reserveType_lut_1d_s_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_tdl10_reserveType::lut_1d_s_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_tdl10Type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_tdl10Type(
        ParameterFileSymbolTableEntry* entry,
        chromatix_tdl10Type* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load enable_sectionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadenable_sectionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_tdl10Type::enable_sectionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load module_versionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmodule_versionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_tdl10Type::module_versionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load control_variablesStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadcontrol_variablesStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_tdl10Type::control_variablesStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load control_methodStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadcontrol_methodStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_tdl10Type::control_methodStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load private_informationStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadprivate_informationStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_tdl10Type::private_informationStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_tdl10_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_tdl10_aec_dataType(
        mod_tdl10_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_tdl10_aec_dataType_aec_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_tdl10_aec_dataType_aec_dataStruct(
        mod_tdl10_aec_dataType::aec_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_tdl10_led_idx_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_tdl10_led_idx_dataType(
        mod_tdl10_led_idx_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_tdl10_led_idx_dataType_led_idx_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_tdl10_led_idx_dataType_led_idx_dataStruct(
        mod_tdl10_led_idx_dataType::led_idx_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_tdl10_hdr_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_tdl10_hdr_aec_dataType(
        mod_tdl10_hdr_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_tdl10_hdr_aec_dataType_hdr_aec_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_tdl10_hdr_aec_dataType_hdr_aec_dataStruct(
        mod_tdl10_hdr_aec_dataType::hdr_aec_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_tdl10_drc_gain_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_tdl10_drc_gain_dataType(
        mod_tdl10_drc_gain_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_tdl10_drc_gain_dataType_drc_gain_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_tdl10_drc_gain_dataType_drc_gain_dataStruct(
        mod_tdl10_drc_gain_dataType::drc_gain_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload chromatix_tdl10_coreType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadchromatix_tdl10_coreType(
        chromatix_tdl10_coreType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload chromatix_tdl10Type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadchromatix_tdl10Type(
        chromatix_tdl10Type* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Parse symbol table entry, and return a new object
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ParameterModule* Parse(
        ParameterSetManager* manager,
        ParameterFileSymbolTableEntry* entry) const;

}; // End class chromatix_tdl10TypeClass

TDL_1_0_0_NAMESPACE_END
#endif // TDL_1_0_0_H

